// pages/charge/house/pro_charge/pro_charge.js

const app = getApp() // 获取应用实例
const util = require('../../../../utils/util')
import { getBillList } from '../../../../utils/http/api'

Page({

  // 页面的初始数据
  data: {
    // 是否隐藏底部布局
    isShowBottom: true,
    // 记录是否全选
    isAllChecked: false,
    // 记录底部多选的合计金额
    total: 0,
    // 记录选中缴费项目的ids，需要传到下一个页面请求数据
    ids: '',
    bill_list: [],
  },

  // 监听子项选择框
  onCbChange(e) {
    let index = e.currentTarget.dataset.index // 当前操作的子项的索引
    if (e.detail.value.length > 0) {// 当前子项被选中
      this.data.bill_list[index].isChecked = true
    } else {
      this.data.bill_list[index].isChecked = false
    }
    this.setData({ bill_list: this.data.bill_list })

    // 子项选中和外层全选联动
    let isCheckAll = true // 标记是否需要全选
    for (let i = 0; i < this.data.bill_list.length; i++) {
      if (!this.data.bill_list[i].isChecked) {// 有一个子项未选中，则外层全选取消
        isCheckAll = false
        break
      }
    }
    this.setData({ isAllChecked: isCheckAll })
    this.setTotal() // 设置总金额
  },

  // 监听外层全选框
  onAllCbChange(e) {
    if (e.detail.value.length > 0) {// 全选
      for (let i = 0; i < this.data.bill_list.length; i++) {
        this.data.bill_list[i].isChecked = true// 子项全选
      }
    } else {// 取消全选
      for (let i = 0; i < this.data.bill_list.length; i++) {
        this.data.bill_list[i].isChecked = false// 子项全不不不选
      }
    }
    this.setData({ bill_list: this.data.bill_list })// 刷新数据
    this.setTotal()// 设置总金额
  },

  // 监听点击全选按钮
  onAllCbClick(e) {
    console.log(e);
    if (!this.data.isAllChecked) {// 当前未全选，进行全选操作
      for (let i = 0; i < this.data.bill_list.length; i++) {
        this.data.bill_list[i].isChecked = true // 子项全选
      }
    } else {// 取消全选
      for (let i = 0; i < this.data.bill_list.length; i++) {
        this.data.bill_list[i].isChecked = false// 子项全不不不选
      }
    }
    this.setData({ bill_list: this.data.bill_list, isAllChecked: !this.data.isAllChecked }) // 刷新数据
    this.setTotal()// 设置总金额
  },

  // 计算并设置总金额
  setTotal(e) {
    let tmpMoney = 0// 临时记录总金额
    let ids = '' // 每次遍历数据前,先置空选中的ids
    for (let i = 0; i < this.data.bill_list.length; i++) {
      if (this.data.bill_list[i].isChecked) {
        tmpMoney = parseFloat(tmpMoney) + parseFloat(this.data.bill_list[i].amount_total)
        ids += ',' + this.data.bill_list[i].id
      }
    }
    this.setData({ total: tmpMoney, ids: ids })
    // console.log('total = ' + this.data.total + ' ids = ' + this.data.ids)
  },

  // 点击右下角缴费
  onCharge(e) {
    if (this.data.total > 0) {
      let ids = this.data.ids
      if (util.isNull(ids)) {
        wx.showToast({ title: '请选择缴费项目', icon: 'error' })
        return
      }
      ids = ids.substring(1)
      let url = '/pages/charge/house/pro_charge_2/pro_charge_2?ids=' + ids
      console.log('url = ' + url)
      util.navigateTo(url)

    } else {
      wx.showToast({ title: '请选择缴费项目', icon: 'none' })
    }
  },

  // 请求我的账单 待缴物业房租费
  async reqMyBillList() {
    wx.showLoading({ title: '处理中', mask: true, })
    let { code, msg, data } = await getBillList({ page: '1', limit: '999999', token: app.gl.token, })
    console.log(`reqMyBillList...code=${code},msg=${msg},data=`, data)
    wx.stopPullDownRefresh()
    if (code == '1') {
      this.setData({ bill_list: data.data })
    } else {
      wx.showToast({ title: msg, icon: 'error' })
    }
    this.setData({ isAllChecked: false, total: 0, ids: '' })// 取消全选 置空选择的项目
    this.setTotal()// 设置总金额
  },

  // 生命周期函数--监听页面加载
  onLoad: function (options) {
    this.reqMyBillList()
  },

  // 页面相关事件处理函数--监听用户下拉动作
  onPullDownRefresh: function () {
    this.reqMyBillList()
  },

})